<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE composition PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<ui:composition xmlns:ui="http://java.sun.com/jsf/facelets"
                template="./templates/templateMenu.xhtml"
                xmlns:f="http://java.sun.com/jsf/core"
                xmlns:p="http://primefaces.prime.com.tr/ui"
                xmlns:h="http://java.sun.com/jsf/html">
    <ui:define name="content">
        <script type="text/javascript"> 
            function confirmFunction(opcion) {
                switch(opcion){
                    case 0: {updateConfirmModificacion.jq.click(); dtMatricula.clearFilters();
                        break;}
                    case 1: updateConfirmEliminacion.jq.click();
                        break;
                    case 2: updateConfirmPagos.jq.click();
                        break;
                }
            }
            
            function openPopupFunction() {
                openPopup.jq.click();
            }
            
            function doPopup(source,title){
                popup=window.open (source, "popup", "height=600, width=900");
                popup.document.title = title;
                popup.focus();
            }
        </script>

        <p:panel header="Consultar Matricula">

            <!--h:panelGrid columns="2" 
                         columnClasses="columnOne,columnTwo"-->
            <!--p:layout style="min-width: 1024px; width: 1024px; min-height:500px; height:500px; margin: 0 auto;"-->         
            <!--p:panel id="frameGuia">
            <p:layoutUnit position="left" collapsed="true" scrollable="true" collapsible="true" width="200" height="500" header="Guia de ayuda">
                <ui:include src="guiaMatricula.xhtml"/> 
            </p:layoutUnit>
            </p:panel>
            <p:layoutUnit position="center" header="Consulta de matricula"-->
            <p:fieldset legend="Filtrar por">
                <h:panelGrid id="frmConsulta" columns="8">
                    <h:outputText value="Fecha matricula: "/>
                    <p:calendar id="txtFecha" 
                                readOnlyInputText="true" 
                                value="#{consultaMatriculaBean.fechaConsulta}"
                                pattern="dd/MM/yyyy" 
                                locale="es" 
                                showOn="button" 
                                onSelectProcess="@this cboGradoConsulta" 
                                onSelectUpdate="dtMatricula"  
                                onselect="dtMatricula.clearFilters()"   
                                selectListener="#{consultaMatriculaBean.handleDateSelect}" />
                    <h:outputText value="Grado: "/>
                    <h:selectOneMenu id="cboGradoConsulta"
                                     value="#{consultaMatriculaBean.selectedSeccionConsulta}"
                                     onchange="onFilterMatricula()">
                        <f:selectItem itemLabel="-Seleccione una Opción-" value="#{null}"/>
                        <f:selectItems value="#{seccionBean.cargarSecciones()}"/>
                    </h:selectOneMenu> 
                    <h:outputText value="Año Escolar: "/>
                    <h:selectOneMenu id="cboAnio" 
                                     value="#{consultaMatriculaBean.selectedAnio}"
                                     onchange="onFilterMatricula()">
                        <f:selectItem itemLabel="-Seleccione una Opción-" value="#{null}"/>
                        <f:selectItems value="#{anioEscolar.cargarAnios()}" />
                    </h:selectOneMenu>
                    <p:commandButton id="cmdMostrarTodos" 
                                     oncomplete="dtMatricula.clearFilters()"  
                                     value="Mostrar todo" 
                                     process="@this" 
                                     immediate="true" 
                                     update="dtMatricula frmConsulta" action="#{consultaMatriculaBean.mostrarTodo}"/>
                </h:panelGrid>
            </p:fieldset>

            <p:dataTable id="dtMatricula" style="font-size:small !important;" 
                         value="#{consultaMatriculaBean.listaMatricula}"  
                         rows="10" 
                         var ="matricula"
                         widgetVar="dtMatricula"
                         paginator="true">

                <f:facet name="header">  
                    <h:panelGrid style="width: 200px;" columnClasses="alignLeft,alignLeft,alignLeft" columns="3">
                        <h:outputText value="Buscar: " />  
                        <p:inputText  id="globalFilter" onkeyup="dtMatricula.filter()" style="width:150px" />  
                    </h:panelGrid> 
                </f:facet> 

                <p:column headerText="Fecha"
                          style="text-align: center">
                    #{matricula[0]}
                </p:column>
                <p:column headerText="Grado"
                          style="text-align: left">
                    #{matricula[1]}
                </p:column>         
                <p:column filterBy="#{matricula[2]}" filterStyle="display:none"
                          headerText="Alumno"
                          style="text-align: left">
                    #{matricula[2]}
                </p:column>
                <p:column headerText="Responsable"
                          style="text-align: left">
                    #{matricula[3]}
                </p:column>
                <p:column headerText="Recibo"
                          style="text-align: center">
                    #{matricula[4]}
                </p:column>
                <p:column headerText="Acciones"
                          style="text-align: center">
                    <p:commandButton  image="ui-icon-pencil" 
                                      title="Modificar Matricula"
                                      action="#{consultaMatriculaBean.modificar}"
                                      update="frmModificarMatricula frmPagos dtPagos frmDebe"
                                      oncomplete="modificarDialogo.show()"
                                      process="@this">  
                        <f:setPropertyActionListener value="#{matricula}" target="#{consultaMatriculaBean.selectedMatricula}" />
                    </p:commandButton>  
                    <p:commandButton  image="ui-icon-trash"
                                      title="Eliminar Matricula"
                                      oncomplete="confirmation.show()" 
                                      update="confirm" 
                                      process="@this">  
                        <f:setPropertyActionListener value="#{matricula}" target="#{consultaMatriculaBean.selectedMatricula}" />
                    </p:commandButton>
                    <p:commandButton image="ui-icon ui-icon-print" 
                                     title="Imprimir Recibo"
                                     type="push"
                                     oncomplete="openPopupFunction()" 
                                     update="opPopup" 
                                     process="@this" 
                                     action="#{consultaMatriculaBean.imprimir}" > 
                        <f:setPropertyActionListener value="#{matricula}" target="#{consultaMatriculaBean.selectedMatricula}" />
                        <f:param name="requireImpresion" value="1"/>
                    </p:commandButton>   
                </p:column>
            </p:dataTable>
            <!--/p:layoutUnit-->
            <!--/p:layout-->
            <!--/h:panelGrid-->
        </p:panel>      


        <!-- Para Elmininar Comenza aqui -->
        <p:confirmDialog message="Desea eliminar el registro?" 
                         width="400"   
                         header="Confirm" 
                         severity="alert" 
                         widgetVar="confirmation" 
                         modal="true">  
            <p:outputPanel id="confirm">
                <h:panelGrid>
                    <label>Matricula de: <b>#{consultaMatriculaBean.selectedMatricula[2]}</b></label>          
                    <h:panelGrid columns="2">
                        <p:commandButton value="Si" 
                                         update="dtMatricula msg"
                                         action="#{consultaMatriculaBean.eliminarMatricula}" 
                                         oncomplete="confirmation.hide(); confirmFunction(1);" 
                                         process="@this">        
                            <f:param name="idMatricula" value="#{consultaMatriculaBean.selectedMatricula[6]}"/>
                        </p:commandButton>
                        <p:commandButton value="No" 
                                         onclick="confirmation.hide()" 
                                         type="button" />    
                    </h:panelGrid>
                </h:panelGrid>
            </p:outputPanel>
        </p:confirmDialog>

        <!-- Para Modificar Comenza aqui -->
        <p:outputPanel id="modificarMatriculaDialogo"  >
            <p:dialog header="Ingrese los Datos" 
                      widgetVar="modificarDialogo" 
                      minWidth="450"
                      modal="true" 
                      closeListener="#{consultaMatriculaBean.nuevo()}" 
                      onCloseUpdate="dtMatricula"
                      visible="#{(facesContext.maximumSeverity.ordinal==0 or facesContext.maximumSeverity.ordinal==null)?false:true}">
                <p:fieldset legend="Modificar Matricula">
                    <h:panelGrid columns="3" id="frmModificarMatricula">
                        <h:outputText value="Buscar Responsable:"/>
                        <p:autoComplete id="txtResponsable"
                                        value="#{consultaMatriculaBean.buscarResponsable}"
                                        selectListener="#{consultaMatriculaBean.onSelectNomPadre}" 
                                        onSelectUpdate="frmModificarMatricula" 
                                        completeMethod="#{autoCompleteBean.completeNombre}">
                            <f:attribute name="field" value="Ambos"/>
                        </p:autoComplete>
                        <p:message for="txtResponsable" />

                        <h:outputText value="Nombres Responsable:"/>
                        <p:inputText id="txtNomResponsable" 
                                     readonly="true"
                                     required="true"
                                     value="#{consultaMatriculaBean.responsable.vcNombres}"/>                        
                        <p:message for="txtNomResponsable" display="icon"/>

                        <h:outputText value="Apellidos:"/>
                        <p:inputText id="txtApelResponsable"
                                     readonly="true"
                                     required="true"
                                     value="#{consultaMatriculaBean.responsable.vcApellidos}"/>                        
                        <p:message for="txtApelResponsable" display="icon"/>

                        <h:outputText value="Dirección:"/>
                        <p:inputTextarea id="txtDirResponsable" 
                                         disabled="true"
                                         rows="2"
                                         value="#{consultaMatriculaBean.responsable.vcDireccion}"/>                        
                        <h:outputText/>

                        <h:outputText value="Número de recibo:"/>
                        <p:spinner id="txtNumRecibo" 
                                   value="#{consultaMatriculaBean.recibo.nuNumRecibo}"
                                   min="1" 
                                   max="99999"
                                   required="true"/>
                        <p:message for="txtNumRecibo" display="icon"/>

                        <h:outputText value="Grado Matricular:"/>
                        <h:selectOneMenu id="cboGrado" 
                                         value="#{consultaMatriculaBean.selectedSeccion}"
                                         required="#{param['requireGroup1']=='1'}">
                            <f:selectItem itemLabel="Seleccione una Opción" value="#{null}"/>
                            <f:selectItems value="#{seccionBean.cargarSecciones()}"/>
                        </h:selectOneMenu>
                        <p:message for="cboGrado" display="icon"/>
                    </h:panelGrid>

                    <h:panelGrid style="text-align: left"
                                 columns="2" >
                        <p:commandButton id="cmdAceptarModificacion"
                                         value="Aceptar" 
                                         action="#{consultaMatriculaBean.confirmarModificacion}"
                                         oncomplete="confirmFunction(0);"
                                         process="@this frmModificarMatricula frmPagos frmDebe"                                                                                   
                                         update="frmModificarMatricula frmPagos frmDebe dtPagos modificarMatriculaDialogo dtMatricula msg" >
                            <f:param name="requireGroup1" value="1"/>
                        </p:commandButton> 
                        <p:commandButton id="cmdModificarPago"                                         
                                         oncomplete="pagosDialogo.show();"
                                         update="frmPagos dtPagos frmDebe"
                                         process="@this"
                                         action="#{consultaMatriculaBean.vaciarPagos}" 
                                         value="Pagos">
                            <!-- Le quite action="{consultaMatriculaBean.cargarPago}" y ya no dio error -->
                        </p:commandButton> 
                    </h:panelGrid>

                </p:fieldset>
            </p:dialog>
        </p:outputPanel>

        <p:outputPanel id="ingresoPagosDialogo">
            <p:dialog header="Pagos" 
                      widgetVar="pagosDialogo" 
                      minWidth="750" 
                      modal="true" 
                      closable="false"
                      visible="#{not empty facesContext.maximumSeverity}">
                <p:fieldset>
                    <h:panelGrid columns="4" id="frmPagos" >
                        <h:outputText value="Concepto:"/>
                        <h:selectOneMenu id="cboConcepto" 
                                         onchange="onChangeConcepto()"
                                         value="#{consultaMatriculaBean.selectedConcepto}"
                                         required="#{param['requireGroup2'] == '1'}">
                            <f:selectItem itemLabel="-Seleccione una Opción-" value="#{null}"/>
                            <f:selectItems value="#{consultaMatriculaBean.cargarConceptos()}"/>
                        </h:selectOneMenu>
                        <p:message for="cboConcepto" display="icon"/>
                        <h:outputText/>

                        <h:outputText value="Cantidad:"/>
                        <p:spinner id="txtCantidad" 
                                   style="width: 50px;" min="1" max="999"
                                   value="#{consultaMatriculaBean.detalleRecibo.nuCantidad}"/>
                        <p:message for="txtCantidad" display="icon"/>
                        <h:outputText/>

                        <h:outputText value="Valor:"/>
                        <p:spinner id="txtValor" 
                                   style="width: 50px;" 
                                   min="0" max="99999"
                                   value="#{consultaMatriculaBean.detalleRecibo.nuPrecio}"/>
                        <p:message for="txtValor" display="icon"/>
                        <h:outputText/>

                        <h:outputText value="Ocultar:"/>
                        <h:selectBooleanCheckbox id="chkEstado"
                                                 value="#{consultaMatriculaBean.detalleRecibo.boOculto}">
                        </h:selectBooleanCheckbox>
                        <p:commandLink id="cmdAddDetalle"
                                       value="Agregar"
                                       rendered="#{consultaMatriculaBean.showAddDetalle}"
                                       action="#{consultaMatriculaBean.addDetallesRecibo}"
                                       process="@this frmPagos"
                                       update="frmPagos dtPagos frmDebe">
                            <f:param name="requireGroup2" value="1"/>
                        </p:commandLink>
                        <p:message for="txtPagoHide"/>
                        <p:inputText id="txtPagoHide" 
                                     style="display: none; ">
                            <f:validator disabled="#{param['requireGroup3'] != '1'}" 
                                         validatorId="pagosValidator"/>
                            <f:attribute name="bean" value="consultaMatriculaBean" />
                        </p:inputText>
                    </h:panelGrid>

                    <p:dataTable id="dtPagos" 
                                 widgetVar="dtPagos"                                        
                                 var="varPagos"
                                 value="#{consultaMatriculaBean.arregloDetalles}">

                        <p:column headerText="Cantidad"
                                  style="text-align: center;
                                  width: 15px" >
                            <h:outputText value="#{varPagos[1].nuCantidad}"/>
                        </p:column>

                        <p:column headerText="Concepto"
                                  style="text-align: left;" >
                            <h:outputText value="#{varPagos[0]}"/>
                        </p:column>

                        <p:column headerText="Valor"
                                  style="text-align: right;
                                  width: 15px;" >
                            <h:outputText value="#{varPagos[1].nuPrecio}"/>
                        </p:column>

                        <p:column headerText="Estado"
                                  style="text-align: center;
                                  width: 15px;" >
                            <h:outputText value="#{varPagos[1].boOculto==true?'Oculto':'Visible'}"/>
                        </p:column>

                        <p:column style="width: 25px; text-align: center"
                                  headerText="Acción" >  
                            <f:facet name="header"/>
                            <p:commandButton  image="ui-icon-trash"
                                              title="Eliminar Concepto"
                                              action="#{consultaMatriculaBean.removeDetalles}"
                                              oncomplete="confirmFunction(2);"
                                              update="frmPagos dtPagos frmDebe"
                                              process="@this"> 
                                <f:setPropertyActionListener target="#{consultaMatriculaBean.selectedPago}"
                                                             value="#{varPagos}"/>
                            </p:commandButton>
                        </p:column>
                    </p:dataTable>

                    <h:panelGrid columns="4" 
                                 id="frmDebe">
                        <h:outputText value="Total: $ #{consultaMatriculaBean.totalPagar} .::. "/>
                        <h:outputText value="Debe:"/>
                        <p:spinner id="txtDebe" 
                                   style="width: 60px;"
                                   min="0" stepFactor="0.01"
                                   max="#{consultaMatriculaBean.totalPagar}"
                                   value="#{consultaMatriculaBean.recibo.nuCantidadDeuda}" />                               
                    </h:panelGrid>
                    <h:panelGrid style="text-align:right" >
                        <p:commandButton id="cmdAceptarPago"
                                         value="Aceptar" 
                                         image="ui-icon ui-icon-circle-check"
                                         update="ingresoPagosDialogo">
                            <f:param name="requireGroup3" value="1"/>
                        </p:commandButton> 
                    </h:panelGrid>

                </p:fieldset>
            </p:dialog>
        </p:outputPanel>

        <p:outputPanel id="opPopup">
            <p:commandButton id="openPopup"
                             style="visibility: hidden" 
                             onclick="doPopup('#{consultaMatriculaBean.url}', 'Impresión de Recibo')" 
                             widgetVar="openPopup"/>            
        </p:outputPanel>

        <p:remoteCommand name="onFilterMatricula" process="@this cboGradoConsulta cboAnio txtFecha" 
                         update="dtMatricula" action="#{consultaMatriculaBean.populateListaMatricula}"/>


        <p:remoteCommand name="onChangeConcepto" process="@this cboConcepto frmPagos" 
                         update="frmPagos dtPagos frmDebe" action="#{consultaMatriculaBean.onChangeConcepto}"/>

        <p:commandButton style="visibility: hidden" 
                         widgetVar="updateConfirmModificacion"
                         update="modificarMatriculaDialogo dtMatricula"/>

        <p:commandButton style="visibility: hidden" 
                         widgetVar="updateConfirmPagos"
                         update="frmPagos dtPagos frmDebe"/>

        <p:commandButton style="visibility: hidden" 
                         widgetVar="updateConfirmEliminacion"
                         update="dtMatricula msg"/>
    </ui:define>
</ui:composition>
